const _ = require('lodash')
const fp = require('lodash/fp')

const cars = [{
  name: 'Ferrari FF',
  horsepower: 660,
  dollar_value: 700000,
  in_stock: true
}, {
  name: 'Spyker C12 Zagato',
  horsepower: 650,
  dollar_value: 648000,
  in_stock: false
}]

// 1

const getLastStock = fp.flowRight(fp.prop('in_stock'), fp.last)

console.log(getLastStock(cars))

// 2

const getFirstName = fp.flowRight(fp.prop('name'), fp.first)

console.log(getFirstName(cars))

// 3

let _average = function (xs) {
  return fp.reduce(fp.add, 0, xs) / xs.length
}

let averageDollarValue = fp.flowRight(_average, fp.map(fp.prop('dollar_value')))

console.log(averageDollarValue(cars))

// 4

let _underscore = fp.replace(/\W+/g, '_')

const sanitizeNames = fp.map(fp.flowRight(fp.toLower, _underscore, fp.prop('name')))

console.log(sanitizeNames(cars))

